package com.dy.其他.汉明距离;
/*
汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。

给出两个整数 x 和 y，计算它们之间的汉明距离。

注意：
0 ≤ x, y < 231.

示例:

输入: x = 1, y = 4

输出: 2

解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

上面的箭头指出了对应二进制位不同的位置。
 */
public class Solution {
    public static int hammingDistance(int x, int y) {
        int count=0;
        int mask=1;
        for(int i=0;i<32;i++){
            if((( x & mask)!=( y & mask))){
                count++;
            }
            mask<<=1;
        }
        return count;
    }
//异或后,统计1的个数
    public static int hammingDistance2(int x, int y) {
        int n = x^y;
        int count=0;
        while(n!=0){
            n&=n-1;
            count++;
        }
        return count;
    }
}
